package com.cleaningcloud.erp.service;

import com.cleaningcloud.erp.domain.ErpSale;
import com.cleaningcloud.erp.domain.dto.ErpSaleDto;
import com.cleaningcloud.erp.domain.statistics.SummaryStock;
import com.cleaningcloud.erp.domain.vo.ErpSaleVo;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 销售单Service接口
 *
 * @author cleaningcloud
 * @date 2024-10-02
 */
public interface IErpSaleService {
    /**
     * 查询销售单
     *
     * @param saleId 销售单主键
     * @return 销售单
     */
    ErpSaleVo selectErpSaleBySaleId(Long saleId);

    /**
     * 查询销售单列表
     *
     * @param erpSale 销售单
     * @return 销售单集合
     */
    List<ErpSaleVo> selectErpSaleList(ErpSaleDto erpSale);

    /**
     * 新增销售单
     *
     * @param erpSale 销售单
     * @return 结果
     */
    int insertErpSale(ErpSaleDto erpSale);

    /**
     * 修改销售单
     *
     * @param erpSale 销售单
     * @return 结果
     */
    int updateErpSale(ErpSaleDto erpSale);

    /**
     * 更改物流状态
     *
     * @param erpSaleDto
     * @return
     */
    int logistics(ErpSaleDto erpSaleDto);

    /**
     * 批量删除销售单
     *
     * @param saleIds 需要删除的销售单主键集合
     * @return 结果
     */
    int deleteErpSaleBySaleIds(Long[] saleIds);

    /**
     * 删除销售单信息
     *
     * @param saleId 销售单主键
     * @return 结果
     */
    int deleteErpSaleBySaleId(Long saleId);


    /**
     * 审核销售单
     *
     * @param erpSale
     * @return
     */
    int auditSale(ErpSale erpSale);


    /**
     * 汇总备货
     *
     * @return
     */
    List<SummaryStock> getSummaryStock(SummaryStock summaryStock);

    /**
     * @Author Shaw
     * @Description 三才环科商城(小程序)下单
     * @date: 2025-04-03 9:35
     * @param: //TODO
     */
    int insertMallErpSale(ErpSaleDto erpSale);

    /**
     * @Author Shaw
     * @Description 三才环科商城(小程序)下单
     * @date: 2025-04-03 9:35
     * @param: //TODO
     */
    List<ErpSaleVo> getMallSaleList(ErpSaleDto erpSale);

    /**
     * @Author Shaw
     * @Description 三才环科商城(小程序)根据订单ID查询订单详情
     * @date: 2025-04-03 9:35
     * @param: //TODO
     */
    ErpSaleVo getMallSaleInfo(ErpSaleDto erpSale);

    /**
     * @Author Shaw
     * @Description 三才环科商城(小程序)取消订单
     * @date: 2025-04-03 9:35
     * @param: //TODO
     */
    int cancelOrder(ErpSaleDto erpSale);
}
